SQL queries frequently include one or more conditions, or constraints. The constraints are typically found in query WHERE clauses. Constraints can be contradictory (the opposite is called “satisfiable”). For example, a query like “Select * from Table1 where Table1.C1=1 and Table1.C1>5″ will always return no rows regardless of the data in T1. This is true since C1=1 and C1>5 is always false for all values of C1. Checking if a set of constraints are satisfiable could be very useful in database management system. If the query optimizer of the database has the ability to check if a set of conditions is satisfiable, or “SAT,” then such queries could be answered immediately without accessing the data.
Transitive closure, or TC, of a set of constraints S1, denoted by TC(S1), is the set of all possible derivable constraints from S1. For example if S1 is (a=b and a=1) then TC(S1) will be (b=1). As illustrated in this simple example, a query can be executed more efficiently if its TC can be determined before execution.